#ifndef VALIDATION_KERNELS_CUH
#define VALIDATION_KERNELS_CUH

// CUDA wrapper declarations for validation kernels
extern "C" {
    void launchSequentialValidation(
        const float* a, const float* b, float* c, int n,
        int* debug_info, float* debug_values, int debug_offset,
        int threads_per_block = 256
    );
    
    void launchMasqueradingValidation(
        const float** a_arrays, const float** b_arrays, float** c_arrays,
        int array_size, int num_sub_tasks,
        int* debug_info, float* debug_values, int debug_offset,
        int threads_per_block = 256
    );
    
    void launchSubTaskSequentialValidation(
        const float* a, const float* b, float* c, int n, int sub_task_id,
        int* debug_info, float* debug_values, int debug_offset,
        int threads_per_block = 256
    );
    
    void launchErrorChecking(
        const float* computed, const float* expected,
        int* error_flags, float* error_values, int n,
        float tolerance = 1e-6f,
        int threads_per_block = 256
    );
}

#endif // VALIDATION_KERNELS_CUH